import java.util.Vector;

public abstract class Test 
{	
	
	public int Id;
	private boolean testFailed = false;
	
	public Test(int Id)
	{
		this.Id = Id;
	}
	
	/**
	 * starting the test by calling the application of the test in runTest 
	 * @param componentsSet
	 */
	public void startTest(Vector<Component> componentsSet)
	{
		testFailed = runTest(componentsSet);
	}
	
	/**
	 * runs the test according to subjective application
	 * @param componentsSet the components path on which the test is running
	 * @return the test result
	 */
	protected abstract boolean runTest(Vector<Component> componentsSet);
	
	
	public int getId()
	{
		return Id;
	}
	/**
	 * 
	 * @return true iff test failed 
	 */
	public boolean getTestFailed()
	{
		return testFailed;
	}
	
}
